#ifndef PROTOMSG_SERIALIZATION_H_
#define PROTOMSG_SERIALIZATION_H_
#include "protomsg_config.h"

namespace protomsg {

  class SerializedData;
  class DeserializedData;
  // Serialization interface is specifically used to generate
  // output serializing data stream , any MessageClass should
  // derive this interface and using the data to output data
  class Serialization {
  public:
    virtual void Serializing( SerializedData* data ) = 0;
  };
  // Deserialization interface is on the contrary to the 
  // Serialization interface , it generates the object itself
  // which means , it allows you to fetch the data safely from
  // the buffer .
  class Deserialization {
  public:
    virtual void Deserializing( const DeserializedData& data ) = 0;
  };

}

#endif// PROTOMSG_SERIALIZATION_H_